home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 22 / CU Amiga Magazine's Super CD-ROM 22 (1998)(EMAP Images)(GB)[!][issue 1998-05].iso / PowerPC / Programming / vbcc / machines / amiga68k / libsrc / extra / chdir.c next >
Encoding:
C/C++ Source or Header  |  1997-12-30  |  529 b   |  34 lines

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <dos/dos.h>
  4.  
  5. static BPTR oldlock;
  6. static int havelock;
  7.  
  8. static void __exitchdir(void)
  9. {
  10.   if (havelock) UnLock(CurrentDir(oldlock));
  11. }
  12.  
  13.  
  14. int chdir(const char *path)
  15. {
  16.   BPTR fl;
  17.   int ret;
  18.  
  19.   if(!havelock){
  20.       if (atexit(__exitchdir)) exit(EXIT_FAILURE);
  21.       if (!(fl=Lock("",SHARED_LOCK))) exit(EXIT_FAILURE);
  22.       oldlock=CurrentDir(fl);
  23.       havelock=1;
  24.   }
  25.  
  26.   if ((fl=Lock((STRPTR)path,SHARED_LOCK)))
  27.   {
  28.     UnLock(CurrentDir(fl));
  29.     return(0);
  30.   }
  31.   return(EOF);
  32. }
  33.  
  34.